home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / crack200 / module3.bas < prev    next >
BASIC Source File  |  1999-09-05  |  4KB  |  93 lines

  1. Attribute VB_Name = "Module3"
  2. Option Explicit
  3.  
  4. Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
  5. Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
  6. Declare Function GetForegroundWindow Lib "user32" () As Long
  7. Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
  8. Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  9. Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  10. Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
  11. Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
  12. Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
  13. Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
  14. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  15. Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
  16. Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  17.  
  18. Public Const SW_SHOW = 5
  19. Public Const SW_RESTORE = 9
  20. Public Const GW_OWNER = 4
  21. Public Const GWL_HWNDPARENT = (-8)
  22. Public Const GWL_EXSTYLE = (-20)
  23. Public Const WS_EX_TOOLWINDOW = &H80
  24. Public Const WS_EX_APPWINDOW = &H40000
  25.  
  26. Public Const LB_ADDSTRING = &H180
  27. Public Const LB_SETITEMDATA = &H19A
  28. Public Sub pSetForegroundWindow(ByVal hwnd As Long)
  29. Dim lForeThreadID As Long
  30. Dim lThisThreadID As Long
  31. Dim lReturn       As Long
  32.  
  33. If hwnd <> GetForegroundWindow() Then
  34.  
  35.     lForeThreadID = GetWindowThreadProcessId(GetForegroundWindow, ByVal 0&)
  36.     lThisThreadID = GetWindowThreadProcessId(hwnd, ByVal 0&)
  37.     
  38.     If lForeThreadID <> lThisThreadID Then
  39.         Call AttachThreadInput(lForeThreadID, lThisThreadID, True)
  40.         lReturn = SetForegroundWindow(hwnd)
  41.         Call AttachThreadInput(lForeThreadID, lThisThreadID, False)
  42.     Else
  43.        lReturn = SetForegroundWindow(hwnd)
  44.     End If
  45.        If IsIconic(hwnd) Then
  46.        Call ShowWindow(hwnd, SW_RESTORE)
  47.     Else
  48.        Call ShowWindow(hwnd, SW_SHOW)
  49.     End If
  50. End If
  51. End Sub
  52.  
  53. Public Function fEnumWindows(lst As ListBox) As Long
  54.  
  55. With lst
  56.     .Clear
  57.     Call EnumWindows(AddressOf fEnumWindowsCallBack, .hwnd)
  58.     fEnumWindows = .ListCount
  59. End With
  60. End Function
  61.  
  62. Private Function fEnumWindowsCallBack(ByVal hwnd As Long, ByVal lParam As Long) As Long
  63. Dim lReturn     As Long
  64. Dim lExStyle    As Long
  65. Dim bNoOwner    As Boolean
  66. Dim sWindowText As String
  67.  
  68. If hwnd <> frmSelect.hwnd Then
  69.     If IsWindowVisible(hwnd) Then
  70.         If GetParent(hwnd) = 0 Then
  71.             bNoOwner = (GetWindow(hwnd, GW_OWNER) = 0)
  72.             lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE)
  73.             
  74.             If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bNoOwner) Or _
  75.                 ((lExStyle And WS_EX_APPWINDOW) And Not bNoOwner) Then
  76.                
  77.                 sWindowText = Space$(256)
  78.                 lReturn = GetWindowText(hwnd, sWindowText, Len(sWindowText))
  79.                 If lReturn Then
  80.                   
  81.                    sWindowText = Left$(sWindowText, lReturn)
  82.                    lReturn = SendMessage(lParam, LB_ADDSTRING, 0, ByVal sWindowText)
  83.                    Call SendMessage(lParam, LB_SETITEMDATA, lReturn, ByVal hwnd)
  84.                 End If
  85.             End If
  86.         End If
  87.     End If
  88. End If
  89. fEnumWindowsCallBack = True
  90. End Function
  91.  
  92.  
  93.